package com.gitee.qdbp.base.annotation;

import java.lang.annotation.Documented;
import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;

/**
 * 数据隔离<br>
 * 在Bean上配置需要隔离的字段, @DataIsolation({ "tenantCode", "deptCode" })<br>
 * 在Update上配置target, @DataIsolation(target = "where"), 不控制自身的字段, 只控制where这个子对象<br>
 *
 * @author zhaohuihua
 * @version 170522
 */
@Target({ ElementType.TYPE, ElementType.ANNOTATION_TYPE })
@Retention(RetentionPolicy.RUNTIME)
@Documented
public @interface DataIsolation {

    /** 启用/禁用 **/
    boolean enable() default true;

    /** 数据隔离对哪些字段生效 **/
    String[] value() default {};

    /** 数据隔离对哪些子对象生效 **/
    // target和value可以同时存在
    String[] target() default {};
}
